package com.example.library.task;

import com.example.library.service.BorrowRecordService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 *
   */
@Slf4j
@Component
@RequiredArgsConstructor
public class ScheduledTasks {

    private final BorrowRecordService borrowRecordService;

    /**
     * 每天凌晨1点更新逾期状态
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void updateOverdueStatus() {
        try {
            log.info("开始执行定时任务：更新逾期状态");
            borrowRecordService.updateOverdueStatus();
            log.info("定时任务执行完成：更新逾期状态");
        } catch (Exception e) {
            log.error("定时任务执行失败：更新逾期状态", e);
        }
    }

    /**
     * 每小时执行一次，检查即将到期的借阅记录
     */
    @Scheduled(cron = "0 0 * * * ?")
    public void checkDueSoonRecords() {
        try {
            log.info("开始执行定时任务：检查即将到期的借阅记录");
            // 这里可以添加发送提醒通知的逻辑
            // 例如：发送邮件、短信等提醒用户即将到期的图书
            log.info("定时任务执行完成：检查即将到期的借阅记录");
        } catch (Exception e) {
            log.error("定时任务执行失败：检查即将到期的借阅记录", e);
        }
    }

}